package com.itboye.eweilisten.me.timu.adapter;

import android.content.Context;
import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.itboye.eweilisten.R;
import com.itboye.eweilisten.model.WanXingBean;
import com.itboye.eweilisten.util.widget.FlowLayout;

import java.util.ArrayList;

/**
 * 选词填空
 */
public class XuanCiAdapter extends RecyclerView.Adapter<XuanCiAdapter.MyViewHolder> {
    private Context context;
    private ArrayList<WanXingBean> adBeans;

    public XuanCiAdapter(Context context, ArrayList<WanXingBean> beans) {
        this.context = context;
        this.adBeans = beans;
    }

    // 获取数据的数量(告诉RecyclerView有多少个视图需要显示)
    public int getItemCount() {
        return adBeans.size();
    }
    // 重写onCreateViewHolder方法，返回一个自定义的ViewHolder(当RecyclerView需要一个ViewHolder时会回调该方法，如果有可复用的View不会回调)
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.eweitingtext, parent, false);
        MyViewHolder myViewHolder = new MyViewHolder(view);
        return myViewHolder;
    }

    // 填充onCreateViewHolder方法返回的holder中的控件(当一个View需要出现在屏幕上时，该方法会被回调，我们需要再该方法中根据数据来更改视图)
    public void onBindViewHolder(final MyViewHolder holder, int position) {
        holder.timu_num.setText(position + 1 + "");
        int i = position;
        for (int j = 0; j < adBeans.get(i).getQuestions().size(); j++) {
            questionContentAdd(holder.questionLine, adBeans.get(i).getQuestions().get(j), holder.answerLine);
        }
        for (int j = 0; j < holder.questionLine.getChildCount(); j++) {
            if ("null".equals(holder.questionLine.getChildAt(j).getTag(R.id.selected) + "")) {

            } else {
                if (0 == Integer.parseInt(holder.questionLine.getChildAt(j).getTag(R.id.selected) + "")) {
                    // tag标记位 0 无数据未选中 1有数据未选中 2无数据选中 3有数据选中
                    holder.questionLine.getChildAt(j).setBackgroundColor(Color.parseColor("#3b7830"));
                    holder.questionLine.getChildAt(j).setTag(R.id.selected, 2);
                    break;
                }
            }
        }

        for (int j = 0; j < adBeans.get(i).getAnswers().size(); j++) {
            answerLineContentAdd(holder.answerLine, adBeans.get(i).getAnswers().get(j), holder.questionLine);
        }

    }
    /**
     * 内容
     * @param questionLine
     * @param string
     * @param answerLine
     */
    private void questionContentAdd(final FlowLayout questionLine, String string, final FlowLayout answerLine) {

        RecyclerView.LayoutParams params = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        params.setMargins(0, 5, 0, 5);
        if ("_".equals(string)) {
            TextView textView = new TextView(context);
            textView.setText(string + "__");
            textView.setTextSize(16);
            textView.setTextColor(Color.parseColor("#3b7830"));
            textView.setTag(R.id.selected, 0);
            textView.setPadding(15, 0, 15, 0);
            // textView.setBackgroundColor(Color.parseColor("#0000ff"));

            textView.setLayoutParams(params);
            questionLine.addView(textView);
            //点击事件
            textView.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {

                    // 这个要分两个方法去做
                    if ("___".equals(((TextView) v).getText() + "")) {
                        // 无填好的内容
                        for (int i = 0; i < questionLine.getChildCount(); i++) {

                            // tag标记位 0 无数据未选中 1有数据未选中 2无数据选中 3有数据选中
                            if ("2".equals(questionLine.getChildAt(i).getTag(R.id.selected) + "")) {
                                questionLine.getChildAt(i).setBackgroundColor(Color.parseColor("#ffffff" + ""));
                                questionLine.getChildAt(i).setTag(R.id.selected, 0);
                                break;
                            }
                        }
                        ((TextView) v).setBackgroundColor(Color.parseColor("#3b7830"));
                        // tag标记位 0 无数据未选中 1有数据未选中 2无数据选中 3有数据选中
                        ((TextView) v).setTag(R.id.selected, 2);

                    } else {
                        // 有填好的内容
                        for (int i = 0; i < questionLine.getChildCount(); i++) {

                            // tag标记位 0 无数据未选中 1有数据未选中 2无数据选中 3有数据选中
                            if ("2".equals(questionLine.getChildAt(i).getTag(R.id.selected) + "")) {
                                questionLine.getChildAt(i).setBackgroundColor(Color.parseColor("#ffffff" + ""));
                                questionLine.getChildAt(i).setTag(R.id.selected, 0);
                            }
                        }
                        for (int i = 0; i < answerLine.getChildCount(); i++) {
                            if (((TextView) v).getText().toString()
                                    .equals(((TextView) answerLine.getChildAt(i)).getText())) {
                                ((TextView) answerLine.getChildAt(i))
                                        .setBackgroundDrawable(context.getResources().getDrawable(R.drawable.flag_01));
                                // tag标记位 0 无数据未选中 1有数据未选中 2无数据选中 3有数据选中
                                ((TextView) answerLine.getChildAt(i)).setTag(R.id.selected, 1);
                                ((TextView) answerLine.getChildAt(i)).setEnabled(true);
                                ((TextView) answerLine.getChildAt(i)).setClickable(true);
                            }
                        }
                        ((TextView) v).setText("___");
                        ((TextView) v).setBackgroundColor(Color.parseColor("#3b7830"));
                        // tag标记位 0 无数据未选中 1有数据未选-中 2无数据选中 3有数据选中
                        ((TextView) v).setTag(R.id.selected, 2);
                    }
                }
            });

        } else {
            TextView textView = new TextView(context);
            textView.setText(string);
            textView.setTextSize(16);
            textView.setTextColor(Color.parseColor("#3b7830"));
            textView.setLayoutParams(params);
            questionLine.addView(textView);
        }

    }

    /**
     * 答案
     * @param answerLine
     * @param string
     * @param questionLine
     */
    private void answerLineContentAdd(FlowLayout answerLine, String string, final FlowLayout questionLine) {
        // 设置添加的textvIew的参数
        RecyclerView.LayoutParams params = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        params.setMargins(0, 5, 25, 5);

        TextView textView = new TextView(context);
        textView.setText(string);
        textView.setTextSize(16);
        textView.setTextColor(Color.parseColor("#ffffff"));
        // textView.setBackgroundColor(Color.parseColor("#0000ff"));

        textView.setLayoutParams(params);
        textView.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.flag_01));
        answerLine.addView(textView);

        textView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                for (int i = 0; i < questionLine.getChildCount(); i++) {
                    // tag标记位 0 无数据未选中 1有数据未选中 2无数据选中 3有数据选中
                    if ("2".equals(questionLine.getChildAt(i).getTag(R.id.selected) + "")) {
                        ((TextView) questionLine.getChildAt(i)).setText(Html.fromHtml("<u>" + ((TextView) v).getText() + "" + "</u>"));

                        v.setEnabled(false);
                        v.setClickable(false);
                        ((TextView) v).setBackgroundDrawable(context.getResources().getDrawable(R.drawable.flag_04));
                        // tag标记位 0 无数据未选中 1有数据未选中 2无数据选中 3有数据选中
                        questionLine.getChildAt(i).setTag(R.id.selected, 1);
                        for (int j = 0; j < questionLine.getChildCount(); j++) {
                            questionLine.getChildAt(j).setBackgroundColor(Color.parseColor("#ffffff"));
                        }

                        for (int j = 0; j < questionLine.getChildCount(); j++) {
                            // tag标记位 0 无数据未选中 1有数据未选中 2无数据选中 3有数据选中
                            if ("0".equals(questionLine.getChildAt(j).getTag(R.id.selected) + "")) {
                                questionLine.getChildAt(j).setBackgroundColor(Color.parseColor("#3b7830"));
                                // tag标记位 0 无数据未选中 1有数据未选中 2无数据选中 3有数据选中
                                questionLine.getChildAt(j).setTag(R.id.selected, 2);
                                break;
                            }
                        }
                        break;
                    }
                }
            }
        });

    }


    // 自定义的ViewHolder，持有每个Item的的所有界面元素
    public class MyViewHolder extends RecyclerView.ViewHolder {
        public FlowLayout questionLine;
        public FlowLayout answerLine;
        public TextView timu_num;

        public MyViewHolder(View itemView) {
            super(itemView);
            questionLine = (FlowLayout) itemView.findViewById(R.id.questionLine);
            answerLine = (FlowLayout) itemView.findViewById(R.id.answerLine);
            timu_num = (TextView) itemView.findViewById(R.id.timu_num);
        }
    }
}
